import cefsharpAdapter from '../cefsharp'

// === 设备相关处理函数 ===
export async function handleDeviceRequests(method, url, data, params) {
    console.log('🔍 [API] 处理设备请求:', { method, url, data, params })
    
    // POST请求处理
    if (method === 'post') {
        // 直接连接设备
        if (/\/device\/direct-connect$/.test(url)) {
            console.log('🔌 [API] 直接连接设备')
            return await cefsharpAdapter.callNativeMethod('HandleAdapterConnect', data)
        }
        
        // Hub连接设备
        if (/\/device\/hub-connect$/.test(url)) {
            console.log('🔌 [API] Hub连接设备')
            return await cefsharpAdapter.callNativeMethod('HandleAdapterConnect', data)
        }
        
        // 自动搜索连接设备
        if (/\/device\/auto-connect$/.test(url)) {
            console.log('🔌 [API] 自动搜索连接设备')
            return await cefsharpAdapter.callNativeMethod('HandleAdapterConnect', data)
        }
        
        // 连接设备
        if (/\/device\/connect$/.test(url)) {
            console.log('🔌 [API] 连接设备')
            return await cefsharpAdapter.callNativeMethod('ConnectDevice', data)
        }
        
        // 断开设备连接
        if (/\/device\/disconnect$/.test(url)) {
            console.log('🔌 [API] 断开设备连接')
            return await cefsharpAdapter.callNativeMethod('DisconnectDevice', data)
        }
        
        // 刷新设备列表
        if (/\/device\/refresh$/.test(url)) {
            console.log('🔄 [API] 刷新设备列表')
            return await cefsharpAdapter.callNativeMethod('HandleSearchDevice', {})
        }
        
        // 测试网络连接
        if (/\/device\/test-network$/.test(url)) {
            console.log('🔍 [API] 测试网络连接')
            return await cefsharpAdapter.callNativeMethod('TestNetworkConnection', data)
        }
        
        // 打开串口
        if (/\/device\/serial-port\/open$/.test(url)) {
            console.log('🔌 [API] 打开串口')
            return await cefsharpAdapter.callNativeMethod('OpenSerialPort', data)
        }
        
        // 关闭串口
        if (/\/device\/serial-port\/close$/.test(url)) {
            console.log('🔌 [API] 关闭串口')
            return await cefsharpAdapter.callNativeMethod('CloseSerialPort', {})
        }
        
        // 通过串口下载配置
        if (/\/device\/config\/download\/serial$/.test(url)) {
            console.log('📥 [API] 通过串口下载配置')
            return await cefsharpAdapter.callNativeMethod('DownloadConfigViaSerial', {})
        }
        
        // 通过网络下载配置
        if (/\/device\/config\/download\/network$/.test(url)) {
            console.log('📥 [API] 通过网络下载配置')
            return await cefsharpAdapter.callNativeMethod('DownloadConfigViaNetwork', data)
        }

        // 停止下载（新接口）
        if (/\/device\/download\/stop$/.test(url)) {
            console.log('🛑 [API] 停止下载')
            return await cefsharpAdapter.callNativeMethod('StopDownload', {})
        }
        
        // 通过串口生成文件
        if (/\/device\/file\/generate\/serial$/.test(url)) {
            console.log('📄 [API] 通过串口生成文件')
            return await cefsharpAdapter.callDbMethod('GenerateFileViaSerial', {})
        }
        
        // 通过网络生成文件
        if (/\/device\/file\/generate\/network$/.test(url)) {
            console.log('📄 [API] 通过网络生成文件')
            return await cefsharpAdapter.callDbMethod('GenerateFileViaNetwork', data)
        }

        // 重启网关
        if (/\/device\/gateway\/restart$/.test(url)) {
            console.log('🔄 [API] 重启网关')
            return await cefsharpAdapter.callNativeMethod('RestartGateway', data || {})
        }

        // 固件更新
        if (/\/device\/firmware\/update$/.test(url)) {
            console.log('📱 [API] 固件更新')
            return await cefsharpAdapter.callNativeMethod('UpdateFirmware', data)
        }

        // 更新到服务器
        if (/\/device\/server\/update$/.test(url)) {
            console.log('☁️ [API] 更新到服务器')
            return await cefsharpAdapter.callNativeMethod('UpdateToServer', data)
        }

        // 更新到设备
        if (/\/device\/device\/update$/.test(url)) {
            console.log('📱 [API] 更新到设备')
            return await cefsharpAdapter.callNativeMethod('UpdateToDevice', data)
        }
    }

    // GET请求处理（添加新的GET接口）
    if (method === 'get') {
        // 获取网络适配器列表
        if (/\/device\/network-adapters$/.test(url)) {
            console.log('🔍 [API] 获取网络适配器列表')
            return await cefsharpAdapter.callNativeMethod('GetNativeNetworkAdapter', data)
        }
        
        // 获取设备列表
        if (/\/device\/list$/.test(url)) {
            console.log('🔍 [API] 获取设备列表')
            return await cefsharpAdapter.callNativeMethod('GetGateWayDeviceList', params)
        }
        
        // 搜索设备
        if (/\/device\/search$/.test(url)) {
            console.log('🔍 [API] 搜索设备')
            return await cefsharpAdapter.callNativeMethod('HandleSearchDevice', params || {})
        }
        
        // 获取串口列表
        if (/\/device\/serial-ports$/.test(url)) {
            console.log('🔍 [API] 获取串口列表')
            return await cefsharpAdapter.callNativeMethod('GetSerialPortList', {})
        }
        
        // 获取下载进度
        if (/\/device\/download\/progress$/.test(url)) {
            console.log('📊 [API] 获取下载进度')
            return await cefsharpAdapter.callNativeMethod('GetDownloadProgress', {})
        }
        
        // 获取当前下载文件信息
        if (/\/device\/download\/current-file$/.test(url)) {
            console.log('📄 [API] 获取当前下载文件信息')
            return await cefsharpAdapter.callNativeMethod('GetCurrentDownloadFile', {})
        }

        // 获取网关重启状态
        if (/\/device\/gateway\/restart\/status$/.test(url)) {
            console.log('🔍 [API] 获取网关重启状态')
            return await cefsharpAdapter.callNativeMethod('GetGatewayRestartStatus', {})
        }

        // 获取固件更新状态
        if (/\/device\/firmware\/status$/.test(url)) {
            console.log('🔍 [API] 获取固件更新状态')
            return await cefsharpAdapter.callNativeMethod('GetFirmwareUpdateStatus', params)
        }

        // 获取服务器更新状态
        if (/\/device\/server\/status$/.test(url)) {
            console.log('🔍 [API] 获取服务器更新状态')
            return await cefsharpAdapter.callNativeMethod('GetServerUpdateStatus', params)
        }

        // 获取设备更新状态
        if (/\/device\/device\/update\/status$/.test(url)) {
            console.log('🔍 [API] 获取设备更新状态')
            return await cefsharpAdapter.callNativeMethod('GetDeviceUpdateStatus', params)
        }
    }

    return null
}

// === 设备相关工具函数 ===
export function isDeviceEndpoint(url) {
    return /\/device/.test(url)
}

export function formatDeviceData(data) {
    // 格式化设备数据的通用函数
    return {
        timestamp: new Date().toISOString(),
        ...data
    }
} 